package com.huike.clues.service;

import com.huike.common.core.domain.TreeSelect;
import com.huike.common.core.domain.entity.SysDept;

import java.util.List;

/**
 * @author EthanRuins
 * @apiNote 部门表(SysDept)表服务接口
 * @since 2023-07-11 15:17:49
 */
public interface ISysDeptService {
    /**
     * 校验部门名称是否唯一
     * @param deptName 部门名称
     * @return true-唯一 false-不唯一
     */
    boolean checkNameUnique(String deptName);

    /**
     * 添加部门
     * @param sysDept 新部门数据
     * @return 影响行数
     */
    int add(SysDept sysDept);

    /**
     * 更新部门数据
     * @param sysDept 新部门数据
     * @return 影响行数
     */
    int update(SysDept sysDept);

    /**
     * 根据ID获取部门信息
     * @param deptId 部门ID
     * @return 部门信息
     */
    SysDept getById(Long deptId);

    /**
     * 根据ID删除部门信息
     * @param deptId 部门id
     * @return 影响行数
     */
    int delete(Long deptId);

    /**
     * 根据指定条件查询部门列表
     * @param dept 查询条件
     * @return 部门列表
     */
    List<SysDept> getDeptList(SysDept dept);

    /**
     * 查询部门列表（排除指定部门结点）
     * @param deptId 指定部门结点的ID
     * @return 部门列表
     */
    List<SysDept> excludeList(Long deptId);

    /**
     * 获取部门下拉树列表
     * @return 下拉树列表
     */
    TreeSelect treeSelect();

    /**
     * 获取对应角色部门列表树
     * @param roleId 对应角色ID
     * @return 列表树
     */
    List<TreeSelect> getRoleDeptTreeselect(Long roleId);
}

